home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / 8bit / cislib_b / sample.mod < prev    next >
Text File  |  1995-04-22  |  2KB  |  55 lines

  1. 100 REM <<< PERCOM DISK CONTROL >>> 
  2. 110 REM <<<   SAMPLE PROGRAM    >>> 
  3. 115 REM MODIFIED BY NATHANIEL T. SMITH 
  4. 120 DIM BUF$(12):REM OPTION TABLE 
  5. 125 DIM R$(1):REM RESPONSES GO HERE 
  6. 130 Z=ADR("hLYd") 
  7. 140 DATA 104,76,89,228 
  8. 150 FOR I=0 TO 3 
  9. 160 READ X 
  10. 170 POKE Z+I,X 
  11. 180 NEXT I 
  12. 190 DCB=768 
  13. 200 DATA 49,1,78,64,0,0,1,0,12,0,1,0 
  14. 210 REM DEVICE,UNIT,COMMAND,STATUS(DIR), 
  15. 220 REM BUFFER ADDR,TIMEOUT,SECTOR ADDR 
  16. 230 FOR I=0 TO 11:REM BUILD THE DCB 
  17. 240 READ X 
  18. 250 POKE DCB+I,X 
  19. 260 NEXT I 
  20. 270 A=ADR(BUF$):REM INSERT BUFFER ADDRESS 
  21. 280 X=INT(A/256) 
  22. 290 POKE DCB+5,X 
  23. 300 POKE DCB+4,A-X*256 
  24. 302 PRINT "}DRIVE NUMBER";:INPUT I 
  25. 304 POKE DCB+1,I:REM SET DRIVE IN DCB 
  26. 310 X=USR(Z):REM READ THE OPTION TABLE 
  27. 320 PRINT "}DRIVE ";I;" NUMBER OF TRACKS=";PEEK(A) 
  28. 330 PRINT "DRIVE ";I;" STEP RATE CODE=";PEEK(A+1) 
  29. 340 PRINT "DRIVE ";I;" SECTORS/TRACK=";PEEK(A+3) 
  30. 350 PRINT PEEK(A+4)+1;" SIDED DRIVE" 
  31. 360 IF PEEK(A+5)=0 THEN PRINT "SINGLE DENSITY":GOTO 380 
  32. 370 IF PEEK(A+5)=4 THEN PRINT "DOUBLE DENSITY" 
  33. 380 PRINT PEEK(A+6)*256+PEEK(A+7);" BYTES/SECTOR" 
  34. 390 PRINT  
  35. 391 ? "CHANGE OPTION TABLE (Y/N)";:INPUT R$:IF ASC(R$)=ASC("N") THEN 530 
  36. 392 IF ASC(R$)=ASC("Y") THEN 600 
  37. 393 GOTO 391 
  38. 400 PRINT "Make it single (S) or double (D)" 
  39. 410 PRINT "  density";:INPUT R$ 
  40. 420 IF ASC(R$)=ASC("D") THEN 470 
  41. 430 POKE A+5,0:REM MAKE SINGLE DENSITY 
  42. 460 GOTO 500 
  43. 470 POKE A+5,4:REM MAKE DOUBLE DENSITY 
  44. 500 POKE DCB+3,128:REM SET DIRECTION FOR WRITE 
  45. 510 POKE DCB+2,79:REM SET COMMAND (WRITE OPTION) 
  46. 520 X=USR(Z):REM UPDATE DRIVE OPTIONS 
  47. 530 ? "}":RUN  
  48. 600 ? :? "NUMBER OF TRACKS=";:INPUT ANS:POKE A,ANS 
  49. 610 ? :? "( 0=30ms  1=20ms  2=12ms  3=6ms )" 
  50. 620 ? :? "STEP RATE CODE=";:INPUT ANS:POKE A+1,ANS 
  51. 625 ? :? "SECTORS/TRACK";:INPUT ANS:POKE A+3,ANS 
  52. 630 ? :? "NUMBER OF SIDES=";:INPUT ANS:POKE A+4,ANS-1 
  53. 640 ? :? "BYTES/SECTOR=";:INPUT ANS:POKE A+6,INT(ANS/256):POKE A+7,ANS-(PEEK(A+6)*256) 
  54. 650 GOTO 400 
  55.